package com.itlong.cloud.app.service;

import com.itlong.cloud.POJO.DTO.app.AppMonthCarBillDTO;
import com.itlong.cloud.POJO.DTO.app.AppMonthCardFeeRecordPageDTO;
import com.itlong.cloud.POJO.PO.PropertyCardPaymentRecordPO;
import com.itlong.cloud.POJO.VO.app.AppMonthCardBillVO;
import com.itlong.cloud.POJO.VO.app.AppMonthCardFeeRecordVO;
import com.itlong.cloud.POJO.VO.app.AppMonthCardParkingVO;
import com.itlong.cloud.POJO.VO.miniprogram.WeChatOfficialGetMonthCardCarVO;
import com.itlong.cloud.utils.page.Page;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * <desc>
 *      APP-月卡停车模块接口.
 * </desc>
 *
 * @createDate 2018/11/6
 */
public interface IAppMonthCardParkingService {

    /**
     * <desc>
     *      获取月卡车辆列表
     * </desc>
     *
     * @param userId
     * @return 月卡车辆列表信息
     * @author Juguang.S
     * @createDate 2018/11/06
     */
    List<AppMonthCardParkingVO> getMonthCarList(String userId) throws Exception;

    /**
     * <desc>
     *      获取当前用户是否是月卡用户
     * </desc>
     *
     * @param userId
     * @return
     * @author Juguang.S
     * @createDate 2018/11/06
     */
    Integer getUserIsParkVIP(String userId) throws Exception;

    /**
     * <desc>
     *      生成月卡车辆缴费账单
     * </desc>
     *
     * @param  appMonthCarBillDTO 生成账单所需参数
     * @return 缴费账单信息数据
     * @author Juguang.S
     * @createDate 2018/11/07
     */
    AppMonthCardBillVO monCarFeeBill(AppMonthCarBillDTO appMonthCarBillDTO) throws Exception;

    /**
     * <desc>
     *      保存月卡缴费记录
     * </desc>
     *
     * @param  recordPO 保存数据
     * @return
     * @author Juguang.S
     * @createDate 2018/11/08
     */
    Integer saveMonthCardFeeRecord(PropertyCardPaymentRecordPO recordPO) throws Exception;

    /**
     * <desc>
     *      获取当前用户下月卡车辆缴费账单列表
     * </desc>
     *
     * @param recordPageDTO 获取账单所需参数
     * @return 缴费记录
     * @author Juguang.S
     * @createDate 2018/11/08
     */
    List<AppMonthCardFeeRecordVO> getMonPayListPage(AppMonthCardFeeRecordPageDTO recordPageDTO) throws Exception;

    /**
     * <desc>
     *      处理零元支付情况
     * </desc>
     *
     * @param billId 账单ID
     * @return 缴费记录
     * @author Juguang.S
     * @createDate 2018/11/15
     */
    void noticeZeroPayment(String billId) throws Exception;

    /**
     * <desc>
     *      微信公众号获取月卡车辆列表
     * </desc>
     *
     * @return 月卡车辆列表
     * @author wangzhi
     * @createDate 2019/04/01
     */
    List<WeChatOfficialGetMonthCardCarVO> getMonthCardCarList(String plateNumber) throws Exception;
}
